package com.example.response.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 自定义注解:
 * 我们知道在ExceptionControllerAdvice定义全局异常处理的ExceptionHandler，这给我们带来了极大的便利，同类型的异常类会被统一处理，但还是存在一些问题
 * 统一类型的异常（BindException）可能也会有很多种的情况：用户名异常、邮箱异常、id异常等等。然而每种异常有对应不同的响应码和响应信息。该如何处理这类情况呢？
 * 随着一个类的属性的增多。switch-case的方式已不可取。我们需要新的方式来解决这一窘境。
 * 我们知道validation校验失败了，我们可以从异常对象中拿到字段对象并能够获取字段的注解信息，那么只要我们为每个字段带上注解，注解中带上我们自定义的错误码code和错误信息msg，问题就会迎刃而解。
 */
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD}) // 表明该注解只能放在类的字段上
public @interface ExceptionCodeAnnotation {
    int code() default 9999;
    String message() default "操作失败";
}
